Clase T> System.Collections.Generic.HashSet<
En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.
La HashSet<T> clase proporciona operaciones de conjunto de alto rendimiento. Un conjunto es una colección que no contiene elementos duplicados y cuyos elementos no están en ningún orden determinado.
La capacidad de un HashSet<T> objeto es el número de elementos que el objeto puede contener. La capacidad de un HashSet<T> objeto aumenta automáticamente a medida que se agregan elementos al objeto .
La HashSet<T> clase se basa en el modelo de conjuntos matemáticos y proporciona operaciones de conjuntos de alto rendimiento similares a acceder a las claves de las Dictionary<TKey,TValue> colecciones o Hashtable . En términos simples, la HashSet<T> clase se puede considerar como una Dictionary<TKey,TValue> colección sin valores.
Una HashSet<T> colección no está ordenada y no puede contener elementos duplicados. Si el orden o la duplicación de elementos es más importante que el rendimiento de la aplicación, considere la posibilidad de usar la List<T> clase junto con el Sort método .
HashSet<T> proporciona muchas operaciones de conjunto matemático, como la adición de conjuntos (uniones) y la resta establecida. En la tabla siguiente se enumeran las operaciones proporcionadas HashSet<T> y sus equivalentes matemáticos.
Operación HashSet | Equivalente matemático |
---|---|
UnionWith | Unión o adición de conjuntos |
IntersectWith | Intersección |
ExceptWith | Resta establecida |
SymmetricExceptWith | Diferencia simétrica |
Además de las operaciones de conjunto enumerados, la HashSet<T> clase también proporciona métodos para determinar la igualdad de conjuntos, la superposición de conjuntos y si un conjunto es un subconjunto o superconjunto de otro conjunto.
Solo .NET Framework: para objetos muy grandesHashSet<T>, puede aumentar la capacidad máxima a 2 mil millones de elementos en un sistema de 64 bits estableciendo el enabled
atributo del elemento true
de <gcAllowVeryLargeObjects>
configuración en en el entorno en tiempo de ejecución.
La clase HashSet<T> implementa la interfaz ISet<T>.
Operaciones de conjunto de hash y LINQ
LINQ proporciona acceso a las Distinct
operaciones de conjunto , Union
, Intersect
y Except
en cualquier origen de datos que implemente las IEnumerable interfaces o IQueryable . HashSet<T> proporciona una colección más grande y sólida de operaciones de conjunto. Por ejemplo, HashSet<T> proporciona comparaciones como IsSubsetOf y IsSupersetOf.
La principal diferencia entre las operaciones y HashSet<T> las operaciones del conjunto LINQ es que las operaciones del conjunto LINQ siempre devuelven una nueva IEnumerable<T> colección, mientras que los HashSet<T> métodos equivalentes modifican la colección actual.
Normalmente, si debe crear un nuevo conjunto o si la aplicación necesita acceso solo a las operaciones del conjunto proporcionado, el uso de operaciones de conjunto LINQ en cualquier IEnumerable<T> colección o matriz será suficiente. Sin embargo, si la aplicación requiere acceso a operaciones de conjunto adicionales, o si no es deseable o necesario para crear una nueva colección, use la HashSet<T> clase .
En la tabla siguiente se muestran las HashSet<T> operaciones y sus operaciones de conjunto de LINQ equivalentes.
Operación HashSet | Equivalente de LINQ |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
No se proporciona. | Distinct |
SymmetricExceptWith | No se proporciona. |
Overlaps | No se proporciona. |
IsSubsetOf | No se proporciona. |
IsProperSubsetOf | No se proporciona. |
IsSupersetOf | No se proporciona. |
IsProperSupersetOf | No se proporciona. |
SetEquals | No se proporciona. |